Source: FEMA, NFIP Redacted Claims, last updated July 2020
cvilleAmountPaidByTract <- read.csv("fema_nfip_cville_tract.csv")
meta <- read_sheet("https://docs.google.com/spreadsheets/d/1nqm3DuVXD1ObbVe_deacvT7uSLdBXfQJo3mkbqDwrVo/edit#gid=5733069", sheet = 'fema_nfip')
Congress created the National Flood Insurance Program (NFIP) in 1968 in order to provide insurance protection and reduce future flood losses through flood hazard identification. FEMA offers NFIP insurance coverage for building structures as well as for contents and personal property within the building structures to eligible and insurable properties. The original data set is updated approximately monthly and represents more than 2,000,000 claims transactions. We have filtered these claims to include only those in the Charlottesville region filed from 2010 upwards. This filtered data summarizes the number of flood claims per tract as well as the total coverage amounts and claim amounts in dollars for each tract in this region. It is meant to provide information in understanding the degree of damage experienced in a place.
glimpse(cvilleAmountPaidByTract)
## Rows: 19
## Columns: 8
## $ censusTract <dbl> 51003010100, 51003010201, 51003010402, 51~
## $ n <int> 1, 1, 2, 2, 8, 4, 1, 1, 7, 9, 1, 1, 3, 1,~
## $ sumAmountPaidOnBuildingClaim <dbl> 5990.52, 4216.12, 0.00, 18406.49, 140550.~
## $ sumAmountPaidOnContentsClaim <dbl> 0.00, 0.00, 0.00, 0.00, 8158.53, 3029.18,~
## $ sumBuildingInsuranceCoverage <int> 250000, 250000, 500000, 450000, 1355000, ~
## $ sumContentsInsuranceCoverage <int> 100000, 100000, 200000, 180000, 342000, 1~
## $ totalInsuranceCoverage <int> 350000, 350000, 700000, 630000, 1697000, ~
## $ totalAmountPaid <dbl> 5990.52, 4216.12, 0.00, 18406.49, 148709.~
# claims per tract
cvilleAmountPaidByTract[c('censusTract', 'n')]
## censusTract n
## 1 51003010100 1
## 2 51003010201 1
## 3 51003010402 2
## 4 51003010500 2
## 5 51003011000 8
## 6 51003011202 4
## 7 51003011400 1
## 8 51065020102 1
## 9 51079030101 7
## 10 51079030102 9
## 11 51109950100 1
## 12 51109950400 1
## 13 51125950200 3
## 14 51125950300 1
## 15 51540000201 1
## 16 51540000302 1
## 17 51540000402 2
## 18 51540000502 7
## 19 51540000700 2
# total observations
sum(cvilleAmountPaidByTract["n"])
## [1] 55
meta %>%
select(c(varname, about)) %>%
as.list()
## $varname
## [1] "censusTract" "n"
## [3] "sumAmountPaidOnBuildingClaim" "sumAmountPaidOnContentsClaim"
## [5] "sumBuildingInsuranceCoverage" "sumContentsInsuranceCoverage"
## [7] "totalInsuranceAmount" "totalAmountPaid"
##
## $about
## [1] "11-digit code defining census tract"
## [2] "number of observations in each tract"
## [3] "sum of $ amount paid on the building claims in each tract"
## [4] "sum of $ amount paid on the contents claims in each tract"
## [5] "sum of the total insurance amount in $ on the buildings (by tract)"
## [6] "sum of the total insurance amount in $ on the contents (by tract)"
## [7] "sum of the building and contents insurance coverage by tract"
## [8] "sum of the total amount paid on both building and contents claims by tract"
# barplot of the total $ amount paid by census tract
ggplot(cvilleAmountPaidByTract) +
geom_col(aes(x=as.factor(censusTract), y=totalAmountPaid),
fill="darkmagenta", color="darkblue") +
coord_flip() +
labs(x="Census Tract",
y="Amount Paid in Dollars ($)",
title="Total Building & Contents Claim Amount Paid by Census Tract")
# barplot of the total insurance coverage amount by census tract
ggplot(cvilleAmountPaidByTract) +
geom_col(aes(x=as.factor(censusTract), y=totalInsuranceCoverage),
fill="darkmagenta", color="darkblue") +
coord_flip() +
labs(x="Census Tract",
y="Insurance Coverage (in $)",
title="Insurance Coverage Amount by Census Tract")
Displays the number of claims in each tract between the years 2010 to the present day. Tracts with more claims are darker on the map.
pal <- colorNumeric("plasma", reverse = TRUE, domain = cville_amount$n) # viridis
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = cville_amount,
fillColor = ~pal(n),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(
weight = 2,
fillOpacity = 0.8,
bringToFront = T
),
popup = paste0("Tract Number: ", cville_amount$NAME, "<br>",
"Number: ", round(cville_amount$n, 2))
) %>%
addLegend("bottomright", pal = pal, values = cville_amount$n,
title = "Number of Insurance Claims", opacity = 0.7)
Displays the total insurance coverage amount for each tract between the years 2010 to the present day. Tracts with higher coverage amounts are darker on the map.
pal <- colorNumeric("plasma", reverse = TRUE, domain = cville_amount$totalInsuranceCoverage) # viridis
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = cville_amount,
fillColor = ~pal(totalInsuranceCoverage),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(
weight = 2,
fillOpacity = 0.8,
bringToFront = T
),
popup = paste0("Tract Number: ", cville_amount$NAME, "<br>",
"Amount Paid in Dollars ($): ", round(cville_amount$totalInsuranceCoverage, 2))
) %>%
addLegend("bottomright", pal = pal, values = cville_amount$totalInsuranceCoverage,
title = "Insurace Coverage Amount", opacity = 0.7)
Displays the total amount given in claims for each tract between the years 2010 to the present day. Tracts with higher claim payments are darker on the map.
pal <- colorNumeric("plasma", reverse = TRUE, domain = cville_amount$totalAmountPaid) # viridis
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = cville_amount,
fillColor = ~pal(totalAmountPaid),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(
weight = 2,
fillOpacity = 0.8,
bringToFront = T
),
popup = paste0("Tract Number: ", cville_amount$NAME, "<br>",
"Amount Paid in Dollars ($): ", round(cville_amount$totalAmountPaid, 2))
) %>%
addLegend("bottomright", pal = pal, values = cville_amount$totalAmountPaid,
title = "Claim Amount Paid", opacity = 0.7)
This is a list of all of FEMA’s open data sets and could be helpful
claim manual that gives a little more details on how claims are filed (might not be that helpful though)
Other potential variables of interest (from original dataset): - elevatedBuildingIndicator: Yes (Y) or No (N) indicator of whether or not a building meets the NFIP definition of an elevated building (if it does not meet this criteria –> higher chance for flood damage) - floodZone: derived from the Flood Insurance Rate Map (FIRM) used to rate the insured property (ie. how susceptible to flood damage they are)